// try {
//     throw new Error('66')
// } catch(err) {
//     var b = 10
//     let a = 20
// }
// // 存在catch作用域
// // console.log(a, b);
// // (function() {
// //     var d = 100
// // })()
// function foo() {
//     var d = 100
// }
// foo()
// console.log(d);
// eval('var d = 1000')
// console.log(d);

// js采用的是词法作用域，即作用域在声明的时候就已经确定了
function foo1() {
    var v1 = 10
    return function foo2() {
        console.log(v1);
    }
}
var foo2 = foo1()
function foo3() {
    var v1 = 20
    foo2()
}
foo3(); // 输出10